home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1997 February / PC Plus Super CD (Issue 124) (PCP124-2-97) (February 1997).iso / componen / m4 / wine.kb < prev    next >
Encoding:
Text File  |  1996-01-12  |  11.1 KB  |  403 lines

  1. /*
  2.                        <M1>Wine
  3.                       Version 1.2
  4.             Copyright (c) Teknowledge Inc. 1986
  5.  
  6.                      March 1, 1986
  7.  
  8.  This knowledge base is for pedagogical purposes only,
  9.       it should not be considered 'expert'.
  10.  
  11.  */
  12.  
  13. /*
  14.  The goal of this knowledege base is to find values for
  15.  the expression 'wine'.
  16.  */
  17.  
  18. goal = wine.
  19.  
  20. /* --------------------- BEST-BODY ------------------------------------- */
  21.  
  22. /*
  23.         The following rules use information about the sauce on the meal
  24.         and the meal's tastiness to find out what 'bodied' wine
  25.         would best accompany the meal.
  26. */
  27.  
  28. rule-1:  if has-sauce = yes and
  29.             sauce = spicy
  30.          then best-body = full.
  31.  
  32.  
  33. rule-2:  if tastiness = delicate
  34.          then best-body = light cf 80.
  35.  
  36. rule-3:  if tastiness = average
  37.          then best-body = light cf 30 and
  38.               best-body = medium cf 60 and
  39.               best-body = full cf 30.
  40.  
  41. rule-4:  if tastiness = strong
  42.          then best-body = medium cf 40 and
  43.               best-body = full cf 80.
  44.  
  45. rule-5:  if has-sauce = yes and
  46.             sauce = cream
  47.          then best-body = medium cf 40 and
  48.               best-body = full cf 60.
  49.  
  50. /* ---------------------- BEST-COLOR -------------------------------- */
  51.  
  52. /*
  53.         The following rules test the main component of the meal and the
  54.         meal's sauce to find out whether red or white wines would be best.
  55. */
  56.  
  57.  
  58. rule-6: if main-component = meat and
  59.            has-veal = no
  60.         then best-color = red cf 90.
  61.  
  62. rule-7: if main-component = poultry and
  63.            has-turkey = no
  64.         then best-color = white cf 90 and
  65.              best-color = red cf 30.
  66.  
  67. rule-8: if main-component = fish
  68.         then best-color = white.
  69.  
  70. rule-9: if not(main-component = fish) and
  71.            has-sauce = yes and
  72.            sauce = tomato
  73.         then best-color = red.
  74.  
  75. rule-10: if main-component = poultry and
  76.             has-turkey = yes
  77.          then best-color = red cf 80 and
  78.               best-color = white cf 50.
  79.  
  80. rule-11: if      has-sauce = yes and
  81.                      sauce = cream
  82.          then best-color = white cf 40
  83.           and best-color = red   cf -90.
  84.  
  85.  
  86. /* ------------------------BEST-SWEETNESS ------------------------------ */
  87.  
  88. /*
  89. This rule provides information about the best sweetness of wine
  90. to accompany the meal, if it has a sweet sauce on it.  The rule
  91. advises that any meal with a sweet sauce will not go well with
  92. dry wine.
  93. */
  94.  
  95. rule-12: if has-sauce = yes and
  96.             sauce = sweet
  97.          then best-sweetness = sweet  cf 90 and
  98.               best-sweetness = medium cf 40.
  99.  
  100.  
  101. /* ------------------------ FEATURE --------------------------------- */
  102.  
  103. /*
  104.         'Feature' is a special characteristic of the wine.
  105. */
  106.  
  107. multivalued(feature).
  108.  
  109. rule-13:  if has-sauce = yes and
  110.              sauce = spicy
  111.           then feature = spiciness.
  112.  
  113. /* --------------------- HAS-SAUCE ---------------------------------- */
  114.  
  115. question(has-sauce) =
  116.        'Does the meal have a sauce on it?'.
  117. legalvals(has-sauce) =
  118.         [yes, no].
  119.  
  120. /* --------------------- HAS-TURKEY --------------------------------- */
  121.  
  122. question(has-turkey) =
  123.        'Does the meal have turkey in it?'.
  124. legalvals(has-turkey) =
  125.         [yes, no].
  126.  
  127. /* --------------------- HAS-VEAL ----------------------------------- */
  128.  
  129. question(has-veal) =
  130.        'Does the meal have veal in it?'.
  131. legalvals(has-veal) =
  132.         [yes, no].
  133.  
  134.  
  135. /* ------------------------- MAIN-COMPONENT --------------------------- */
  136.  
  137. multivalued(main-component).
  138.  
  139. question(main-component) =
  140.        'Is the main component of the meal meat, fish or poultry?'.
  141. legalvals(main-component) =
  142.         [meat, fish, poultry].
  143.  
  144. /* -------------------------- PREFERRED-BODY ------------------------- */
  145.  
  146. multivalued(preferred-body).
  147.  
  148. question(preferred-body) =
  149.        'Do you generally prefer light, medium or full bodied wines?'.
  150. legalvals(preferred-body) =
  151.         [light, medium, full].
  152.  
  153. /* -------------------------- PREFERRED-COLOR ------------------------ */
  154.  
  155. multivalued(preferred-color).
  156.  
  157. question(preferred-color) =
  158.        'Do you generally prefer red or white wines?'.
  159. legalvals(preferred-color) =
  160.         [red, white].
  161.  
  162. /* -------------------------- PREFERRED-SWEETNESS --------------------- */
  163.  
  164. multivalued(preferred-sweetness).
  165.  
  166. question(preferred-sweetness) =
  167.        'Do you generally prefer dry, medium or sweet wines?'.
  168. legalvals(preferred-sweetness) =
  169.         [dry, medium, sweet].
  170.  
  171. /* ------------------------- RECOMMENDED-BODY -------------------------- */
  172.  
  173. /*
  174.         These rules provide information about what 'bodied' wine to
  175.         actually recommend.
  176. */
  177.  
  178.  
  179. /*
  180.         If the best body is known, then that is what's recommended:
  181. */
  182.  
  183. rule-14:  if best-body = light
  184.           then recommended-body = light.
  185.  
  186. rule-15:  if best-body = medium
  187.           then recommended-body = medium.
  188.  
  189. rule-16:  if best-body = full
  190.           then recommended-body = full.
  191.  
  192.  
  193. /*
  194.         If the best body is not known, then the user's preference is
  195.         recommended:
  196. */
  197.  
  198. rule-17:  if best-body is unknown and
  199.              preferred-body = light
  200.           then recommended-body = light.
  201.  
  202. rule-18:  if best-body is unknown and
  203.              preferred-body = medium
  204.           then recommended-body = medium.
  205.  
  206. rule-19:  if best-body is unknown and
  207.              preferred-body = full
  208.           then recommended-body = full.
  209.  
  210. /*
  211.         If neither the best body nor the preferred body is known,
  212.         medium-bodied wines are recommended.
  213. */
  214.  
  215. rule-20: if best-body is unknown and
  216.             preferred-body is unknown
  217.          then recommended-body = medium.
  218.  
  219. /* ------------------------ RECOMMENDED-COLOR ------------------------- */
  220.  
  221. /*
  222.         These rules determine what color wine to recommend.
  223. */
  224.  
  225. /*
  226.         If the best color of wine is known, then that's what's
  227.         recommended:
  228. */
  229.  
  230. rule-21: if best-color = red
  231.          then recommended-color = red.
  232.  
  233. rule-22: if best-color = white
  234.          then recommended-color = white.
  235.  
  236. /*
  237.         If the best color is not known, then the user's preference is
  238.         recommended:
  239. */
  240.  
  241. rule-23: if best-color is unknown and
  242.             preferred-color = red
  243.          then recommended-color = red.
  244.  
  245. rule-24: if best-color is unknown and
  246.             preferred-color = white
  247.          then recommended-color = white.
  248.  
  249. /*
  250.         If neither the best color nor the preferred color is known,
  251.         then the Wine Advisor tries to recommend both red and white wines:
  252. */
  253.  
  254.  
  255. rule-25: if best-color is unknown and
  256.             preferred-color is unknown
  257.          then recommended-color = red cf 50 and
  258.               recommended-color = white cf 50.
  259.  
  260. /* ------------------------- RECOMMENDED-SWEETNESS ------------------------- */
  261.  
  262. /*
  263.         As with the other recommended characteristics, if the best sweetness
  264.         for the wine is known, then that's what gets recommended:
  265. */
  266.  
  267. rule-26: if best-sweetness = dry
  268.          then recommended-sweetness = dry.
  269.  
  270. rule-27: if best-sweetness = medium
  271.          then recommended-sweetness = medium.
  272.  
  273. rule-28: if best-sweetness = sweet
  274.          then recommended-sweetness = sweet.
  275.  
  276. /*
  277.         Likewise, if the best sweetness isn't known, then the user's
  278.         preference is recommended:
  279. */
  280.  
  281. rule-29: if best-sweetness is unknown and
  282.             preferred-sweetness = dry
  283.          then recommended-sweetness = dry.
  284.  
  285. rule-30: if best-sweetness is unknown and
  286.             preferred-sweetness = medium
  287.          then recommended-sweetness = medium.
  288.  
  289. rule-31: if best-sweetness is unknown and
  290.             preferred-sweetness = sweet
  291.          then recommended-sweetness = sweet.
  292.  
  293. /*
  294.         If neither the best nor the preferred sweetness is known,
  295.         recommendations are made for a medium-sweet wine.
  296. */
  297.  
  298. rule-32: if best-sweetness is unknown and
  299.             preferred-sweetness is unknown
  300.          then recommended-sweetness = medium.
  301.  
  302. /* ------------------------- SAUCE --------------------------------- */
  303.  
  304. multivalued(sauce).
  305.  
  306. question(sauce) =
  307.        'Is the sauce for the meal spicy, sweet, cream or tomato?'.
  308. legalvals(sauce) =
  309.         [spicy, sweet, cream, tomato].
  310.  
  311. /* -------------------------- TASTINESS ----------------------------- */
  312.  
  313. multivalued(tastiness).
  314.  
  315. question(tastiness) =
  316.        'Is the flavor of the meal delicate, average or strong?'.
  317. legalvals(tastiness) =
  318.         [delicate, average, strong].
  319.  
  320. /* -------------------------- WINE ---------------------------------- */
  321.  
  322. /*
  323.         The following rules conclude various wines depending on the
  324.         recommended characteristics of the wine:
  325. */
  326.  
  327. multivalued(wine).
  328.  
  329. rule-33: if recommended-color = red and
  330.             recommended-body = medium and
  331.             recommended-sweetness = medium
  332.                   or recommended-sweetness = sweet
  333.          then wine = gamay.
  334.  
  335. rule-34: if recommended-color = white and
  336.             recommended-body = light and
  337.             recommended-sweetness = dry
  338.          then wine = chablis.
  339.  
  340. rule-35: if recommended-color = white and
  341.             recommended-body = medium and
  342.             recommended-sweetness = dry
  343.          then wine = sauvignon-blanc.
  344.  
  345. rule-36: if recommended-color = white and
  346.             recommended-body = medium
  347.                         or recommended-body = full and
  348.             recommended-sweetness = dry
  349.                         or recommended-sweetness = medium
  350.          then wine = chardonnay.
  351.         
  352. rule-37: if recommended-color = white and
  353.             recommended-body = light and
  354.             recommended-sweetness = dry
  355.                         or recommended-sweetness = medium
  356.          then wine = soave.
  357.         
  358. rule-38: if recommended-color = white and
  359.             recommended-body = light
  360.                         or recommended-body = medium and
  361.             recommended-sweetness = medium
  362.                         or recommended-sweetness = sweet
  363.          then wine = riesling.
  364.         
  365. rule-39: if recommended-color = white and
  366.             recommended-body = full and
  367.             feature = spiciness
  368.         then wine = gewuerztraminer.
  369.         
  370. rule-40: if recommended-color = white and
  371.             recommended-body = light and
  372.             recommended-sweetness = medium
  373.                         or recommended-sweetness = sweet
  374.          then wine = chenin-blanc.
  375.  
  376. rule-41: if recommended-color = red and
  377.             recommended-body = light
  378.         then wine = valpolicella.
  379.  
  380. rule-42: if recommended-color = red and
  381.             recommended-sweetness = dry
  382.                         or recommended-sweetness = medium
  383.          then wine = cabernet-sauvignon and
  384.               wine = zinfandel.
  385.  
  386. rule-43: if recommended-color = red and
  387.             recommended-body = medium and
  388.             recommended-sweetness = medium
  389.          then wine =  pinot-noir.
  390.  
  391. rule-44: if recommended-color = red and
  392.             recommended-body = full
  393.          then wine = burgundy.
  394.  
  395.  
  396.         
  397. /* -------------------------------------------------------------------- */
  398.  
  399.  
  400.  
  401.  
  402.  
  403.